import random
# type hints
from typing import List
# typing 是类型注解用到的主要模块，
# 除了 List 以外该模块内还有许多与类型有关的特殊对象，举例如下。
# Dict:字典类型，例如 [str, int] 代表键为字符串值为整型的字典。
# Callable:可调用对象，例如Callablel[[str, str],List[str]] 表示接收两个字符串作为参数，返回字符串列表的可调用对象。
# TextIO: 使用文本协议的类文件类型，相应地，还有二进制类型 BinaryIO。
# Any:代表任何类型。

class Duck:
    def __init__(self, color: str):
        self.color = color

    def quack(self) -> None:
        print(f"Hi, I'm a {self.color} duck!")


def create_random_ducks(number: int) -> List[Duck]:
    """创建一批随机颜色鸭子

    :param number: 需要创建的鸭子数量
    """
    ducks: List[Duck] = []
    for _ in range(number):
        color = random.choice(['yellow', 'white', 'gray'])
        ducks.append(Duck(color=color))
    return ducks
